home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util1 / yk211src.lha / Yak_2.11_Src / Prefs / GadTools / Misc_window.c < prev    next >
C/C++ Source or Header  |  1995-11-16  |  9KB  |  336 lines

  1.  
  2. /*
  3.  *  Source machine generated by GadToolsBox V2.0b
  4.  *  which is (c) Copyright 1991-1993 Jaba Development
  5.  *
  6.  *  GUI Designed by : Martin W Scott and Gaël Marziou
  7.  */
  8.  
  9.  
  10.  
  11.  
  12. #include <exec/types.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/classes.h>
  15. #include <intuition/classusr.h>
  16. #include <intuition/imageclass.h>
  17. #include <intuition/gadgetclass.h>
  18. #include <intuition/intuitionbase.h>
  19. #include <libraries/gadtools.h>
  20. #include <proto/exec.h>
  21. #include <proto/intuition.h>
  22. #include <proto/gadtools.h>
  23. #include <proto/wb.h>
  24. #include <string.h>
  25.  
  26.  
  27. #include "yak.h"
  28. #include "version.h"
  29. #include "hotkey_types.h"
  30. #include "gui.h"
  31. #include "Misc_Window.h"
  32. #include "Settings.h"
  33. #include "yak_locale_strings.h"
  34.  
  35. extern struct Catalog    *Catalog;
  36. extern struct DosLibrary *DOSBase;
  37.  
  38. extern LONG (*HandleIDCMP)(void);
  39.  
  40. struct Window   *MiscWnd = NULL;
  41. struct Gadget   *MiscGList = NULL;
  42. struct Gadget   *MiscGadgets[Misc_CNT];
  43. UWORD            MiscWidth = 440;
  44. UWORD            MiscHeight = 95;
  45. UBYTE           *MiscWdt = NULL;
  46. BOOL             MiscWdi = FALSE;
  47.  
  48. struct AppWindow      *MiscAppWin;         /* AppWindow pointer */
  49. IMPORT struct MsgPort *AppMsgPort;
  50.  
  51.  
  52. /* Online help system */
  53. IMPORT void ShowYakHelp(char *, char *);
  54. IMPORT void CloseYakHelp(void);
  55. IMPORT char *PrefsHelp;
  56.  
  57.  
  58. UWORD MiscGTypes[] = {
  59.     SLIDER_KIND,
  60.     BUTTON_KIND,
  61.     CHECKBOX_KIND,
  62.     CHECKBOX_KIND,
  63.     CHECKBOX_KIND,
  64.     CHECKBOX_KIND,
  65.     CHECKBOX_KIND,
  66.     CHECKBOX_KIND,
  67.     CHECKBOX_KIND,
  68.     CHECKBOX_KIND
  69. };
  70.  
  71. struct NewGadget MiscNGad[] = {
  72.     227,  4, 180, 11, NULL, NULL, GD_ClickVol,           PLACETEXT_LEFT,  NULL, CLICKVOLUME_STRING,
  73.     170, 79, 100, 13, NULL, NULL, GD_Return2,            PLACETEXT_IN,    NULL, OK_STRING,
  74.     227, 25, 26,  11, NULL, NULL, GD_BlackBorderCheck,   PLACETEXT_RIGHT, NULL, BLACK_BORDER,
  75.     7,   25, 26,  11, NULL, NULL, GD_WildStarCheck   ,   PLACETEXT_RIGHT, NULL, WILD_STAR_STRING,
  76.     7,   37, 26,  11, NULL, NULL, GD_NoClickCheck    ,   PLACETEXT_RIGHT, NULL, NOCLICK_STRING,
  77.     227, 49, 26,  11, NULL, NULL, GD_UnixDirsCheck   ,   PLACETEXT_RIGHT, NULL, UNIXDIRS_STRING,
  78.     7,   49, 26,  11, NULL, NULL, GD_MMBShiftCheck,      PLACETEXT_RIGHT, NULL, MMB_SHIFT_STRING,
  79.     227, 61, 26,  11, NULL, NULL, GD_SlashDirCheck,      PLACETEXT_RIGHT, NULL, SLASHDIR_STRING,
  80.     7,   61, 26,  11, NULL, NULL, GD_FullWorkbenchCheck, PLACETEXT_RIGHT, NULL, FULL_WORKBENCH_STRING,
  81.     227, 37, 26,  11, NULL, NULL, GD_CapShiftCheck,      PLACETEXT_RIGHT, NULL, CAPSHIFT_STRING
  82. };
  83.  
  84.  
  85.  
  86. ULONG MiscGTags[] = {
  87.     (GTSL_Max), 64, (GTSL_MaxLevelLen), 4, (GTSL_LevelFormat), (ULONG)"%2ld", (GTSL_LevelPlace), (PLACETEXT_RIGHT), (PGA_Freedom), LORIENT_HORIZ, (GA_RelVerify), TRUE, (TAG_DONE),
  88.     (TAG_DONE),
  89.     (GTCB_Scaled), TRUE, (TAG_DONE),
  90.     (GTCB_Scaled), TRUE, (TAG_DONE),
  91.     (GTCB_Scaled), TRUE, (TAG_DONE),
  92.     (GTCB_Scaled), TRUE, (TAG_DONE),
  93.     (GTCB_Scaled), TRUE, (TAG_DONE),
  94.     (GTCB_Scaled), TRUE, (TAG_DONE),
  95.     (GTCB_Scaled), TRUE, (TAG_DONE),
  96.     (GTCB_Scaled), TRUE, (TAG_DONE)
  97. };
  98.  
  99.  
  100.  
  101. VOID
  102. MiscRender()
  103. {
  104.     UWORD Width, Height;
  105.  
  106.     ComputeFont(MiscWidth,MiscHeight);
  107.  
  108.     Width = ComputeX( MiscWidth );
  109.     Height= ComputeY(76);
  110.     
  111.     DrawThinBevelBox( Scr, MiscWnd->RPort, OffX,
  112.                      OffY,
  113.                      Width,
  114.                      Height,
  115.                      FALSE );
  116.  
  117.     DrawThinBevelBox( Scr, MiscWnd->RPort, OffX,
  118.                      OffY + Height,
  119.                      Width,
  120.                      ComputeY(MiscHeight) - Height,
  121.                      FALSE );
  122. }
  123.  
  124.  
  125.  
  126.  
  127. int
  128. OpenMiscWindow()
  129. {
  130.     struct NewGadget        ng;
  131.     struct Gadget   *g;
  132.     UWORD           lc,tc;
  133.     WORD            wleft=WindowLeft, wtop=WindowTop;
  134.     UWORD           ww, wh;
  135.  
  136.     ComputeFont(MiscWidth,MiscHeight);
  137.  
  138.     ww = OffX + ComputeX(MiscWidth) + Scr->WBorRight;
  139.     wh = OffY + ComputeY(MiscHeight) + Scr->WBorBottom;
  140.  
  141.     SetUpWindowCoordinates(ww, wh, &wleft, &wtop);
  142.  
  143.     if (! (g = CreateContext(&MiscGList))) 
  144.         return(1L);
  145.  
  146.     for(lc = 0,tc = 0; lc < Misc_CNT; lc++) 
  147.     {
  148.         CopyMem((char *)&MiscNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
  149.  
  150.         ng.ng_VisualInfo = VisualInfo;
  151.         ng.ng_TextAttr   = Font;
  152.         ng.ng_LeftEdge   = OffX +ComputeX(ng.ng_LeftEdge);
  153.         ng.ng_TopEdge    = OffY +ComputeY(ng.ng_TopEdge);
  154.         ng.ng_Width      = ComputeX(ng.ng_Width);
  155.         ng.ng_Height     = ComputeY(ng.ng_Height);
  156.  
  157.         MiscGadgets[ lc ] = g = CreateGadgetA((ULONG)MiscGTypes[ lc ],g,&ng,(struct TagItem *) &MiscGTags[ tc ]);
  158.  
  159.         while(MiscGTags[ tc ]) 
  160.             tc += 2;
  161.         
  162.         tc++;
  163.  
  164.         if (NOT g)
  165.             return(2L);
  166.     }
  167.  
  168.     if (NOT (MiscWnd = OpenWindowTags(NULL,
  169.                                       WA_Left,         wleft,
  170.                                       WA_Top,          wtop,
  171.                                       WA_Width,        ww,
  172.                                       WA_Height,       wh,
  173.                                       WA_IDCMP,        LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_RAWKEY,
  174.                                       WA_Flags,        WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
  175.                                       WA_Gadgets,      MiscGList,
  176.                                       WA_Title,        MiscWdt,
  177.                                       WA_ScreenTitle,  getString(COPYRIGHT_STRING),
  178.                                       WA_PubScreen,    Scr,
  179.                                       WA_PubScreenName,PubScreenName,
  180.                                       TAG_DONE)))
  181.         return(4L);
  182.  
  183.     MiscAppWin = AddAppWindowA(0, 0, MiscWnd, AppMsgPort, NULL);
  184.  
  185.     GT_RefreshWindow(MiscWnd,NULL);
  186.  
  187.     MiscRender();
  188.  
  189.     return(0L);
  190. }
  191.  
  192.  
  193.  
  194.  
  195.  
  196. VOID
  197. CloseMiscWindow()
  198. {
  199.     CloseOneWindow(MiscWnd,NULL,MiscGList,MiscAppWin);
  200.     MiscWnd = NULL;
  201. }
  202.  
  203.  
  204.  
  205. /* initialise all gadgets of Misc window */
  206. static void
  207. InitMiscGadgets(void)
  208. {
  209.     InitToggleGadgets(MISC_WINDOW);
  210.     InitWindowGadget(GDX_SlashDirCheck, GA_Disabled, !unixdirs, MISC_WINDOW);
  211.  
  212.     InitWindowGadget(GDX_ClickVol,       GTSL_Level, click_volume,    MISC_WINDOW);
  213. }
  214.  
  215.  
  216. /* handle Misc window events */
  217. LONG
  218. HandleMiscIDCMP(void)
  219. {
  220.     struct IntuiMessage *msg;
  221.     struct Gadget   *gadget;
  222.     ULONG           class;
  223.     UWORD           code;
  224.     BOOL            close=FALSE;
  225.     LONG            ret=RET_OKAY;
  226.  
  227.     while (!close && (msg = GT_GetIMsg(MiscWnd->UserPort)))
  228.     {
  229.         class = msg->Class;
  230.         code = msg->Code;
  231.         gadget = (struct Gadget *)msg->IAddress;
  232.         GT_ReplyIMsg(msg);
  233.  
  234.         switch (class)
  235.         {
  236.           case GADGETUP:
  237.           case GADGETDOWN:
  238.             switch (gadget->GadgetID)
  239.             {
  240.               case GD_Return2:
  241.                 CloseMiscWindow();
  242.                 if (!ShowWindowID(ROOT_WINDOW))
  243.                     ret= RET_QUIT;
  244.                 close = TRUE;
  245.                 break;
  246.  
  247.               case GD_ClickVol:
  248.                 click_volume = code;
  249.                 break;
  250.  
  251.               case GD_BlackBorderCheck:
  252.                 blackborder ^= TRUE;
  253.                 break;
  254.         
  255.               case GD_WildStarCheck: /* toggle */
  256.                 wildstar ^= TRUE;
  257.                 break;
  258.  
  259.               case GD_NoClickCheck: /* toggle */
  260.                 noclick ^= TRUE;
  261.                 break;
  262.  
  263.               case GD_UnixDirsCheck: /* toggle */
  264.                 unixdirs ^= TRUE;
  265.                 InitWindowGadget(GDX_SlashDirCheck, GA_Disabled, !unixdirs, MISC_WINDOW);
  266.                 break;
  267.  
  268.               case GD_MMBShiftCheck: /* toggle */
  269.                 mmbshift ^= TRUE;
  270.                 break;
  271.  
  272.               case GD_SlashDirCheck: /* toggle */
  273.                 slashdir ^= TRUE;
  274.                 break;
  275.  
  276.               case GD_FullWorkbenchCheck: /* toggle */
  277.                 fullworkbench ^= TRUE;
  278.                 break;
  279.  
  280.               case GD_CapShiftCheck: /* toggle */
  281.                 capshift ^= TRUE;
  282.                 break;
  283.             }                   /* switch (gadget->GadgetID) */
  284.             break;
  285.  
  286.           case IDCMP_RAWKEY:
  287.                 /* Help key pressed */
  288.                 if (code == 95)
  289.                 {
  290.                     /* Display the node */
  291.                     ShowYakHelp(PrefsHelp, "Miscellaneous");
  292.                 }
  293.                 break;
  294.  
  295.           case REFRESHWINDOW:
  296.             GT_BeginRefresh(MiscWnd);
  297.             GT_EndRefresh(MiscWnd, TRUE);
  298.             break;
  299.         }                       /* switch (class) */
  300.  
  301.     }                           /* while more messages */
  302.  
  303.     return ret;
  304. }
  305.  
  306.         
  307. /* show our misc window */
  308. BOOL
  309. ShowMiscWindow(void)
  310. {
  311.     if (!MiscWdi)
  312.     {
  313.         MiscWdi = TRUE;
  314.  
  315.         MiscWdt = getString(MISCELLANEOUS_STRING);
  316.         LocalizeNGadLabels (Misc_CNT, MiscNGad);
  317.     }
  318.  
  319.     if (!OpenMiscWindow())      /* like the name says... */
  320.     {
  321.         InitMiscGadgets();
  322.         wndsigflag = 1 << MiscWnd->UserPort->mp_SigBit;
  323.         curwin   = MiscWnd;
  324.         curwinID = MISC_WINDOW;
  325.         HandleIDCMP = HandleMiscIDCMP;
  326.         return TRUE;
  327.     }
  328.  
  329.     FreeGadgets(MiscGList);
  330.     CloseDownScreen();
  331.     curwin =  NULL;
  332.     wndsigflag = 0L;
  333.     return FALSE;
  334.  
  335.